package com.example.pmanagesys.interceptor;
// 拦截器可以在请求处理的不同阶段进行干预
// 验证是否已经登录

import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

@Component
public class LoginCheckInterceptor implements HandlerInterceptor {

    // 在请求处理之前，
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        // 获取 HttpSession
        HttpSession session = request.getSession();
        // 进行登录检查
        if (!isLoggedIn(session)) {
            // 未登录，重定向到登录界面
            response.sendRedirect("/user/login");
            return false; // 中断请求处理
        }
        return true; // 继续请求处理
    }

    // 验证登录
    private boolean isLoggedIn(HttpSession session) {
        // 这里添加您的登录检查逻辑，例如检查用户是否有有效的登录凭证
        // 返回 true 表示已登录，返回 false 表示未登录

        // 从 session 中获取用户信息
        Object userAttribute = session.getAttribute("user");System.out.println(userAttribute);
        // 如果用户信息存在，则认为已登录
        return userAttribute != null;
    }

    // 在请求处理之后
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
                           ModelAndView modelAndView) throws Exception {

    }
    // 在整个请求处理完成之后
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
            throws Exception {

    }
}

